Predicting the performance (i.e., time behavior and resource consumption) of traditional, monolithic software solutions is typically based on measurements of specific end-to-end scenarios, mainly executed by the software developers and sometimes refined by customers. This approach is no longer sufficient for service-oriented architectures.
Service-oriented architectures offer great flexibility to customers as they can easily modify or even compose software solutions based on numerous services. Consequently, developers of software services no longer know under which conditions and in which scenarios their services will be used. Thus, accurate prediction of performance can only be made once a customer has decided how to compose his or her system.
Current approaches for performance prediction fall into one of the following areas:
Infrastructure models: An entire system infrastructure is modelled from an operational perspective. This allows online access to performance measures of various resources. In such models the dynamic behavior of services is not modelled at all; thus no prediction of service/system behavior can be performed.
Analytical approaches: There are numerous means for analytical performance analysis based on queuing networks, Petri nets or similar formalisms. Most of them rely on special Markov chains. Though powerful in theory a common problem to all these approaches is the state space explosion problem. The state space explosion problem relates to the computing complexity exponentially growing with the number of modelling entities. Modelling the dynamic behavior of service-oriented architectures does not scale at all as each behavioral element (e.g., decision operation) would have to become one dedicated element of the analytical model. Even worse, specific data values (input, output or internal state) may have a significant impact on the behavior but cannot be captured at all.
Simulation models: Numerous special-purpose simulation models have been used for different software systems. However, they are typically specific for each application (i.e., knowledge about the application characteristics and process flows is manually coded into the model).
Manual assessment: For practical reasons, this assessment will always be restricted to the evaluation of a small subset of all the potential scenarios and will also require a physical installation of the system in question.
Accordingly, it would be desirable and highly advantageous to have a method, computer program product, and system for automatically predicting the performance characteristics of a service-oriented architecture, such method, computer program product and system overcoming the above mentioned limitations and deficiencies of the current approaches.